(0) Obligation:
The Runtime Complexity (innermost) of the given
CpxRelTRS could be proven to be
BOUNDS(1, n^2).
The TRS R consists of the following rules:
*(@x, @y) → #mult(@x, @y)
dyade(@l1, @l2) → dyade#1(@l1, @l2)
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2))
dyade#1(nil, @l2) → nil
mult(@n, @l) → mult#1(@l, @n)
mult#1(::(@x, @xs), @n) → ::(*(@n, @x), mult(@n, @xs))
mult#1(nil, @n) → nil
The (relative) TRS S consists of the following rules:
#add(#0, @y) → @y
#add(#neg(#s(#0)), @y) → #pred(@y)
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y))
#add(#pos(#s(#0)), @y) → #succ(@y)
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y))
#mult(#0, #0) → #0
#mult(#0, #neg(@y)) → #0
#mult(#0, #pos(@y)) → #0
#mult(#neg(@x), #0) → #0
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y))
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #0) → #0
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y))
#natmult(#0, @y) → #0
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(@x))) → #neg(#s(#s(@x)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x))
#succ(#pos(#s(@x))) → #pos(#s(#s(@x)))
Rewrite Strategy: INNERMOST
(1) RelTrsToTrsProof (UPPER BOUND(ID) transformation)
transformed relative TRS to TRS
(2) Obligation:
The Runtime Complexity (innermost) of the given
CpxTRS could be proven to be
BOUNDS(1, n^2).
The TRS R consists of the following rules:
*(@x, @y) → #mult(@x, @y)
dyade(@l1, @l2) → dyade#1(@l1, @l2)
dyade#1(::(@x, @xs), @l2) → ::(mult(@x, @l2), dyade(@xs, @l2))
dyade#1(nil, @l2) → nil
mult(@n, @l) → mult#1(@l, @n)
mult#1(::(@x, @xs), @n) → ::(*(@n, @x), mult(@n, @xs))
mult#1(nil, @n) → nil
#add(#0, @y) → @y
#add(#neg(#s(#0)), @y) → #pred(@y)
#add(#neg(#s(#s(@x))), @y) → #pred(#add(#pos(#s(@x)), @y))
#add(#pos(#s(#0)), @y) → #succ(@y)
#add(#pos(#s(#s(@x))), @y) → #succ(#add(#pos(#s(@x)), @y))
#mult(#0, #0) → #0
#mult(#0, #neg(@y)) → #0
#mult(#0, #pos(@y)) → #0
#mult(#neg(@x), #0) → #0
#mult(#neg(@x), #neg(@y)) → #pos(#natmult(@x, @y))
#mult(#neg(@x), #pos(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #0) → #0
#mult(#pos(@x), #neg(@y)) → #neg(#natmult(@x, @y))
#mult(#pos(@x), #pos(@y)) → #pos(#natmult(@x, @y))
#natmult(#0, @y) → #0
#natmult(#s(@x), @y) → #add(#pos(@y), #natmult(@x, @y))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(@x))) → #neg(#s(#s(@x)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(@x)))) → #pos(#s(@x))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(@x)))) → #neg(#s(@x))
#succ(#pos(#s(@x))) → #pos(#s(#s(@x)))
Rewrite Strategy: INNERMOST
(3) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID) transformation)
Converted Cpx (relative) TRS to CDT
(4) Obligation:
Complexity Dependency Tuples Problem
Rules:
*(z0, z1) → #mult(z0, z1)
dyade(z0, z1) → dyade#1(z0, z1)
dyade#1(::(z0, z1), z2) → ::(mult(z0, z2), dyade(z1, z2))
dyade#1(nil, z0) → nil
mult(z0, z1) → mult#1(z1, z0)
mult#1(::(z0, z1), z2) → ::(*(z2, z0), mult(z2, z1))
mult#1(nil, z0) → nil
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
DYADE#1(nil, z0) → c3
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
MULT#1(nil, z0) → c6
#ADD(#0, z0) → c7
#ADD(#neg(#s(#0)), z0) → c8(#PRED(z0))
#ADD(#neg(#s(#s(z0))), z1) → c9(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#0)), z0) → c10(#SUCC(z0))
#ADD(#pos(#s(#s(z0))), z1) → c11(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#MULT(#0, #0) → c12
#MULT(#0, #neg(z0)) → c13
#MULT(#0, #pos(z0)) → c14
#MULT(#neg(z0), #0) → c15
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #0) → c18
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#0, z0) → c21
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#PRED(#0) → c23
#PRED(#neg(#s(z0))) → c24
#PRED(#pos(#s(#0))) → c25
#PRED(#pos(#s(#s(z0)))) → c26
#SUCC(#0) → c27
#SUCC(#neg(#s(#0))) → c28
#SUCC(#neg(#s(#s(z0)))) → c29
#SUCC(#pos(#s(z0))) → c30
S tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
DYADE#1(nil, z0) → c3
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
MULT#1(nil, z0) → c6
#ADD(#0, z0) → c7
#ADD(#neg(#s(#0)), z0) → c8(#PRED(z0))
#ADD(#neg(#s(#s(z0))), z1) → c9(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#0)), z0) → c10(#SUCC(z0))
#ADD(#pos(#s(#s(z0))), z1) → c11(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#MULT(#0, #0) → c12
#MULT(#0, #neg(z0)) → c13
#MULT(#0, #pos(z0)) → c14
#MULT(#neg(z0), #0) → c15
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #0) → c18
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#0, z0) → c21
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#PRED(#0) → c23
#PRED(#neg(#s(z0))) → c24
#PRED(#pos(#s(#0))) → c25
#PRED(#pos(#s(#s(z0)))) → c26
#SUCC(#0) → c27
#SUCC(#neg(#s(#0))) → c28
#SUCC(#neg(#s(#s(z0)))) → c29
#SUCC(#pos(#s(z0))) → c30
K tuples:none
Defined Rule Symbols:
*, dyade, dyade#1, mult, mult#1, #add, #mult, #natmult, #pred, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #ADD, #MULT, #NATMULT, #PRED, #SUCC
Compound Symbols:
c, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16, c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30
(5) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID) transformation)
Removed 19 trailing nodes:
#MULT(#0, #neg(z0)) → c13
#SUCC(#pos(#s(z0))) → c30
#NATMULT(#0, z0) → c21
#PRED(#pos(#s(#0))) → c25
#SUCC(#0) → c27
#PRED(#0) → c23
#MULT(#pos(z0), #0) → c18
DYADE#1(nil, z0) → c3
#MULT(#0, #0) → c12
#SUCC(#neg(#s(#0))) → c28
#ADD(#0, z0) → c7
#SUCC(#neg(#s(#s(z0)))) → c29
#PRED(#neg(#s(z0))) → c24
#PRED(#pos(#s(#s(z0)))) → c26
#MULT(#neg(z0), #0) → c15
#MULT(#0, #pos(z0)) → c14
MULT#1(nil, z0) → c6
#ADD(#pos(#s(#0)), z0) → c10(#SUCC(z0))
#ADD(#neg(#s(#0)), z0) → c8(#PRED(z0))
(6) Obligation:
Complexity Dependency Tuples Problem
Rules:
*(z0, z1) → #mult(z0, z1)
dyade(z0, z1) → dyade#1(z0, z1)
dyade#1(::(z0, z1), z2) → ::(mult(z0, z2), dyade(z1, z2))
dyade#1(nil, z0) → nil
mult(z0, z1) → mult#1(z1, z0)
mult#1(::(z0, z1), z2) → ::(*(z2, z0), mult(z2, z1))
mult#1(nil, z0) → nil
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#ADD(#neg(#s(#s(z0))), z1) → c9(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
S tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#ADD(#neg(#s(#s(z0))), z1) → c9(#PRED(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#SUCC(#add(#pos(#s(z0)), z1)), #ADD(#pos(#s(z0)), z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
K tuples:none
Defined Rule Symbols:
*, dyade, dyade#1, mult, mult#1, #add, #mult, #natmult, #pred, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #ADD, #MULT, #NATMULT
Compound Symbols:
c, c1, c2, c4, c5, c9, c11, c16, c17, c19, c20, c22
(7) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID) transformation)
Removed 2 trailing tuple parts
(8) Obligation:
Complexity Dependency Tuples Problem
Rules:
*(z0, z1) → #mult(z0, z1)
dyade(z0, z1) → dyade#1(z0, z1)
dyade#1(::(z0, z1), z2) → ::(mult(z0, z2), dyade(z1, z2))
dyade#1(nil, z0) → nil
mult(z0, z1) → mult#1(z1, z0)
mult#1(::(z0, z1), z2) → ::(*(z2, z0), mult(z2, z1))
mult#1(nil, z0) → nil
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#neg(#s(#s(z0))), z1) → c9(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#neg(#s(#s(z0))), z1) → c9(#ADD(#pos(#s(z0)), z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:none
Defined Rule Symbols:
*, dyade, dyade#1, mult, mult#1, #add, #mult, #natmult, #pred, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c9, c11
(9) CdtLeafRemovalProof (ComplexityIfPolyImplication transformation)
Removed 1 leading nodes:
#ADD(#neg(#s(#s(z0))), z1) → c9(#ADD(#pos(#s(z0)), z1))
(10) Obligation:
Complexity Dependency Tuples Problem
Rules:
*(z0, z1) → #mult(z0, z1)
dyade(z0, z1) → dyade#1(z0, z1)
dyade#1(::(z0, z1), z2) → ::(mult(z0, z2), dyade(z1, z2))
dyade#1(nil, z0) → nil
mult(z0, z1) → mult#1(z1, z0)
mult#1(::(z0, z1), z2) → ::(*(z2, z0), mult(z2, z1))
mult#1(nil, z0) → nil
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:none
Defined Rule Symbols:
*, dyade, dyade#1, mult, mult#1, #add, #mult, #natmult, #pred, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11
(11) CdtUsableRulesProof (EQUIVALENT transformation)
The following rules are not usable and were removed:
*(z0, z1) → #mult(z0, z1)
dyade(z0, z1) → dyade#1(z0, z1)
dyade#1(::(z0, z1), z2) → ::(mult(z0, z2), dyade(z1, z2))
dyade#1(nil, z0) → nil
mult(z0, z1) → mult#1(z1, z0)
mult#1(::(z0, z1), z2) → ::(*(z2, z0), mult(z2, z1))
mult#1(nil, z0) → nil
#add(#0, z0) → z0
#add(#neg(#s(#0)), z0) → #pred(z0)
#add(#neg(#s(#s(z0))), z1) → #pred(#add(#pos(#s(z0)), z1))
#mult(#0, #0) → #0
#mult(#0, #neg(z0)) → #0
#mult(#0, #pos(z0)) → #0
#mult(#neg(z0), #0) → #0
#mult(#neg(z0), #neg(z1)) → #pos(#natmult(z0, z1))
#mult(#neg(z0), #pos(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #0) → #0
#mult(#pos(z0), #neg(z1)) → #neg(#natmult(z0, z1))
#mult(#pos(z0), #pos(z1)) → #pos(#natmult(z0, z1))
#pred(#0) → #neg(#s(#0))
#pred(#neg(#s(z0))) → #neg(#s(#s(z0)))
#pred(#pos(#s(#0))) → #0
#pred(#pos(#s(#s(z0)))) → #pos(#s(z0))
(12) Obligation:
Complexity Dependency Tuples Problem
Rules:
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:none
Defined Rule Symbols:
#natmult, #add, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11
(13) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(#0) = 0
POL(#ADD(x1, x2)) = 0
POL(#MULT(x1, x2)) = 0
POL(#NATMULT(x1, x2)) = 0
POL(#add(x1, x2)) = 0
POL(#natmult(x1, x2)) = 0
POL(#neg(x1)) = 0
POL(#pos(x1)) = 0
POL(#s(x1)) = 0
POL(#succ(x1)) = 0
POL(*'(x1, x2)) = 0
POL(::(x1, x2)) = [1] + x2
POL(DYADE(x1, x2)) = [1] + x1
POL(DYADE#1(x1, x2)) = x1
POL(MULT(x1, x2)) = 0
POL(MULT#1(x1, x2)) = 0
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c11(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c19(x1)) = x1
POL(c2(x1, x2)) = x1 + x2
POL(c20(x1)) = x1
POL(c22(x1, x2)) = x1 + x2
POL(c4(x1)) = x1
POL(c5(x1, x2)) = x1 + x2
(14) Obligation:
Complexity Dependency Tuples Problem
Rules:
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
Defined Rule Symbols:
#natmult, #add, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11
(15) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)
The following tuples could be moved from S to K by knowledge propagation:
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
(16) Obligation:
Complexity Dependency Tuples Problem
Rules:
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
Defined Rule Symbols:
#natmult, #add, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11
(17) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(#0) = 0
POL(#ADD(x1, x2)) = [2]x1 + x12
POL(#MULT(x1, x2)) = x1·x2
POL(#NATMULT(x1, x2)) = 0
POL(#add(x1, x2)) = x1 + x2 + x12
POL(#natmult(x1, x2)) = [2]x2 + x22 + x1·x2 + [2]x12
POL(#neg(x1)) = [1]
POL(#pos(x1)) = 0
POL(#s(x1)) = 0
POL(#succ(x1)) = [1] + x1
POL(*'(x1, x2)) = x1·x2
POL(::(x1, x2)) = [2] + x1 + x2
POL(DYADE(x1, x2)) = [2] + [2]x1 + [2]x1·x2 + [2]x12
POL(DYADE#1(x1, x2)) = [1] + x1 + [2]x1·x2 + [2]x12
POL(MULT(x1, x2)) = x1 + x1·x2
POL(MULT#1(x1, x2)) = x1·x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c11(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c19(x1)) = x1
POL(c2(x1, x2)) = x1 + x2
POL(c20(x1)) = x1
POL(c22(x1, x2)) = x1 + x2
POL(c4(x1)) = x1
POL(c5(x1, x2)) = x1 + x2
(18) Obligation:
Complexity Dependency Tuples Problem
Rules:
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
Defined Rule Symbols:
#natmult, #add, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11
(19) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(#0) = [1]
POL(#ADD(x1, x2)) = 0
POL(#MULT(x1, x2)) = x1·x2
POL(#NATMULT(x1, x2)) = [2]
POL(#add(x1, x2)) = [1] + x1 + [2]x22 + x1·x2 + [2]x12
POL(#natmult(x1, x2)) = [2] + x22 + [2]x1·x2 + x12
POL(#neg(x1)) = [2]
POL(#pos(x1)) = [2] + x1
POL(#s(x1)) = [1]
POL(#succ(x1)) = [2]x1 + [2]x12
POL(*'(x1, x2)) = [2]x1 + x1·x2
POL(::(x1, x2)) = [1] + x1 + x2
POL(DYADE(x1, x2)) = x1 + x2 + [2]x1·x2 + x12
POL(DYADE#1(x1, x2)) = x1 + x2 + [2]x1·x2 + x12
POL(MULT(x1, x2)) = [2]x1·x2
POL(MULT#1(x1, x2)) = [2]x1·x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c11(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c19(x1)) = x1
POL(c2(x1, x2)) = x1 + x2
POL(c20(x1)) = x1
POL(c22(x1, x2)) = x1 + x2
POL(c4(x1)) = x1
POL(c5(x1, x2)) = x1 + x2
(20) Obligation:
Complexity Dependency Tuples Problem
Rules:
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
Defined Rule Symbols:
#natmult, #add, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11
(21) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
We considered the (Usable) Rules:none
And the Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(#0) = [1]
POL(#ADD(x1, x2)) = 0
POL(#MULT(x1, x2)) = [2]x1·x2
POL(#NATMULT(x1, x2)) = [1] + x1 + x2 + [2]x1·x2
POL(#add(x1, x2)) = [1] + x1 + x2 + x22 + [2]x1·x2 + x12
POL(#natmult(x1, x2)) = [1] + [2]x22 + x1·x2 + [2]x12
POL(#neg(x1)) = [2] + x1
POL(#pos(x1)) = [1] + x1
POL(#s(x1)) = [1] + x1
POL(#succ(x1)) = [1] + [2]x1
POL(*'(x1, x2)) = x1 + [2]x1·x2
POL(::(x1, x2)) = [2] + x1 + x2
POL(DYADE(x1, x2)) = [2]x1·x2
POL(DYADE#1(x1, x2)) = [2]x1·x2
POL(MULT(x1, x2)) = [2]x1·x2
POL(MULT#1(x1, x2)) = [2]x1·x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c11(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c19(x1)) = x1
POL(c2(x1, x2)) = x1 + x2
POL(c20(x1)) = x1
POL(c22(x1, x2)) = x1 + x2
POL(c4(x1)) = x1
POL(c5(x1, x2)) = x1 + x2
(22) Obligation:
Complexity Dependency Tuples Problem
Rules:
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
Defined Rule Symbols:
#natmult, #add, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11
(23) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
We considered the (Usable) Rules:none
And the Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(#0) = [2]
POL(#ADD(x1, x2)) = [2]x1 + [2]x12
POL(#MULT(x1, x2)) = 0
POL(#NATMULT(x1, x2)) = 0
POL(#add(x1, x2)) = [2] + x1 + x2 + [2]x1·x2 + x12
POL(#natmult(x1, x2)) = [1] + [2]x2 + [2]x22 + [2]x1·x2
POL(#neg(x1)) = [1]
POL(#pos(x1)) = 0
POL(#s(x1)) = 0
POL(#succ(x1)) = [1]
POL(*'(x1, x2)) = [2] + [2]x1 + x2 + [2]x1·x2
POL(::(x1, x2)) = [2] + x1 + x2
POL(DYADE(x1, x2)) = [1] + x1 + [2]x2 + [2]x1·x2 + [2]x12
POL(DYADE#1(x1, x2)) = [2]x1·x2 + [2]x12
POL(MULT(x1, x2)) = [2] + x1 + [2]x2 + [2]x1·x2 + x12
POL(MULT#1(x1, x2)) = [2]x1 + x22 + [2]x1·x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c11(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c19(x1)) = x1
POL(c2(x1, x2)) = x1 + x2
POL(c20(x1)) = x1
POL(c22(x1, x2)) = x1 + x2
POL(c4(x1)) = x1
POL(c5(x1, x2)) = x1 + x2
(24) Obligation:
Complexity Dependency Tuples Problem
Rules:
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
Defined Rule Symbols:
#natmult, #add, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11
(25) CdtKnowledgeProof (BOTH BOUNDS(ID, ID) transformation)
The following tuples could be moved from S to K by knowledge propagation:
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
(26) Obligation:
Complexity Dependency Tuples Problem
Rules:
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
K tuples:
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
Defined Rule Symbols:
#natmult, #add, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11
(27) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2)) transformation)
Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S.
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
We considered the (Usable) Rules:none
And the Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
The order we found is given by the following interpretation:
Polynomial interpretation :
POL(#0) = [1]
POL(#ADD(x1, x2)) = [1] + x1
POL(#MULT(x1, x2)) = [1] + [2]x1·x2
POL(#NATMULT(x1, x2)) = [2] + [2]x1 + [2]x2 + [2]x1·x2
POL(#add(x1, x2)) = [2]x22 + [2]x1·x2 + [2]x12
POL(#natmult(x1, x2)) = x1 + [2]x2 + x22 + [2]x12
POL(#neg(x1)) = [1] + x1
POL(#pos(x1)) = [2] + x1
POL(#s(x1)) = [2] + x1
POL(#succ(x1)) = [2] + [2]x1 + x12
POL(*'(x1, x2)) = [1] + [2]x1·x2
POL(::(x1, x2)) = [2] + x1 + x2
POL(DYADE(x1, x2)) = [1] + [2]x2 + [2]x1·x2 + [2]x12
POL(DYADE#1(x1, x2)) = x2 + [2]x1·x2 + [2]x12
POL(MULT(x1, x2)) = [2] + [2]x1 + x2 + [2]x1·x2 + [2]x12
POL(MULT#1(x1, x2)) = [1] + x1 + [2]x22 + [2]x1·x2
POL(c(x1)) = x1
POL(c1(x1)) = x1
POL(c11(x1)) = x1
POL(c16(x1)) = x1
POL(c17(x1)) = x1
POL(c19(x1)) = x1
POL(c2(x1, x2)) = x1 + x2
POL(c20(x1)) = x1
POL(c22(x1, x2)) = x1 + x2
POL(c4(x1)) = x1
POL(c5(x1, x2)) = x1 + x2
(28) Obligation:
Complexity Dependency Tuples Problem
Rules:
#natmult(#0, z0) → #0
#natmult(#s(z0), z1) → #add(#pos(z1), #natmult(z0, z1))
#add(#pos(#s(#0)), z0) → #succ(z0)
#add(#pos(#s(#s(z0))), z1) → #succ(#add(#pos(#s(z0)), z1))
#succ(#0) → #pos(#s(#0))
#succ(#neg(#s(#0))) → #0
#succ(#neg(#s(#s(z0)))) → #neg(#s(z0))
#succ(#pos(#s(z0))) → #pos(#s(#s(z0)))
Tuples:
*'(z0, z1) → c(#MULT(z0, z1))
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
S tuples:none
K tuples:
DYADE(z0, z1) → c1(DYADE#1(z0, z1))
DYADE#1(::(z0, z1), z2) → c2(MULT(z0, z2), DYADE(z1, z2))
#MULT(#neg(z0), #neg(z1)) → c16(#NATMULT(z0, z1))
#MULT(#neg(z0), #pos(z1)) → c17(#NATMULT(z0, z1))
#MULT(#pos(z0), #neg(z1)) → c19(#NATMULT(z0, z1))
#MULT(#pos(z0), #pos(z1)) → c20(#NATMULT(z0, z1))
#NATMULT(#s(z0), z1) → c22(#ADD(#pos(z1), #natmult(z0, z1)), #NATMULT(z0, z1))
*'(z0, z1) → c(#MULT(z0, z1))
MULT(z0, z1) → c4(MULT#1(z1, z0))
MULT#1(::(z0, z1), z2) → c5(*'(z2, z0), MULT(z2, z1))
#ADD(#pos(#s(#s(z0))), z1) → c11(#ADD(#pos(#s(z0)), z1))
Defined Rule Symbols:
#natmult, #add, #succ
Defined Pair Symbols:
*', DYADE, DYADE#1, MULT, MULT#1, #MULT, #NATMULT, #ADD
Compound Symbols:
c, c1, c2, c4, c5, c16, c17, c19, c20, c22, c11
(29) SIsEmptyProof (BOTH BOUNDS(ID, ID) transformation)
The set S is empty
(30) BOUNDS(1, 1)